package pe.com.itworth.ttsclient.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

public final class FechaUtilitario {

	public static Date deCadenaAHora(final String fechaYHora) {
		try {

			SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
			GregorianCalendar time = new GregorianCalendar();
			time.setTime(sdf.parse(fechaYHora));
			return time.getTime();

		} catch (ParseException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		}

		return null;
	}

	public static Date deCadenaAFecha(final String fechaYHora) {
		try {

			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			GregorianCalendar date = new GregorianCalendar();
			date.setTime(sdf.parse(fechaYHora));
			return date.getTime();

		} catch (ParseException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		}

		return null;
	}

	public static Date deCadenaAFechaYHora(final String fechaYHora) {
		try {

			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
			GregorianCalendar date = new GregorianCalendar();
			date.setTime(sdf.parse(fechaYHora));
			return date.getTime();

		} catch (ParseException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		}

		return null;
	}

	public static String deFechaACadena(final Date fechaYHora) {
		return new SimpleDateFormat("dd/MM/yyyy").format(fechaYHora);
	}

	public static String deHoraACadena(final Date fechaYHora) {
		return new SimpleDateFormat("HH:mm:ss").format(fechaYHora);
	}

	public static Date diaMesYAnioDe(final Date fechaYHora) {
		return FechaUtilitario.deCadenaAFecha(FechaUtilitario
				.deFechaACadena(fechaYHora));
	}

	public static Date horasMinutosYSegundosDe(final Date fechaYHora) {
		return FechaUtilitario.deCadenaAHora(FechaUtilitario
				.deHoraACadena(fechaYHora));
	}

	public static String deFechaYHoraACadena(final Date fechaYHora) {
		return FechaUtilitario.deFechaACadena(fechaYHora) + " "
				+ FechaUtilitario.deHoraACadena(fechaYHora);
	}
	
	public static String anioDe(final Date fechaYHora) {
		return new SimpleDateFormat("yyyy").format(fechaYHora);
	}

	public static String formatearFecha(Date fecha) {
		// String formato = "%td/%tm/%tY";
		String formato = "%tY-%tm-%td";
		String fechaFormateada = "";
		fechaFormateada = String.format(formato, fecha, fecha, fecha);
		return fechaFormateada;
	}

}
